# 使用面向对象的编程思想开发

# 设计一个类实现数据封装 -> data_define.py

# 设计一个抽象类, 定义文件读取的相关功能, 用子类实现具体功能 -> file_define.py

from pyecharts.charts import Bar
from pyecharts.options import *
from pyecharts.globals import ThemeType
from file_define import *
from data_define import Record

text_file_reader = TextFileReader("D:/Code/KnowCode/my_python/资料/第13章资料/2011年1月销售数据.txt")
json_file_reader = JsonFileReader("D:/Code/KnowCode/my_python/资料/第13章资料/2011年2月销售数据JSON.txt")

jan_data = text_file_reader.read_data()
feb_data = json_file_reader.read_data()

# 将两个月份数据合并
all_data: list[Record] = jan_data + feb_data

# 计算
data_dict: dict[str, int] = {}

for record in all_data:
    try:
        data_dict[record.date] += record.money
    except KeyError:
        data_dict[record.date] = record.money

# print(data_dict)

# 可视化图表开发
bar = Bar(init_opts=InitOpts(theme=ThemeType.LIGHT))

bar.add_xaxis(list(data_dict.keys()))
bar.add_yaxis("销售额", list(data_dict.values()), label_opts=LabelOpts(is_show=False))
bar.set_global_opts(
    title_opts=TitleOpts(title="每日销售额")
)
bar.render("每日销售额柱状图.html")
